import librosa
import numpy as np
import soundfile as sf

# 加载音频文件
audio_path = '5s.wav'  # 请替换为实际音频文件路径
audio, sr = librosa.load(audio_path)

# 进行短时傅里叶变换（STFT）
stft_result = librosa.stft(audio)
magnitude, phase = librosa.magphase(stft_result)

# 将幅度谱转换为频率数组
freqs = librosa.fft_frequencies(sr=sr, n_fft=len(stft_result))

# 定义要去除的频率范围（单位：Hz）
remove_low = 0  # 例如去除低于100Hz的频率
remove_high = 2000  # 例如去除高于500Hz的频率

# 找到要去除频率范围对应的索引
low_index = np.where(freqs < remove_low)[0]
high_index = np.where(freqs > remove_high)[0]
remove_index = np.concatenate((low_index, high_index))

# 将目标频率范围的幅度设为0
magnitude[remove_index, :] = 0

# 结合处理后的幅度谱和原始相位谱，进行逆短时傅里叶变换（ISTFT）
processed_stft = magnitude * phase
processed_audio = librosa.istft(processed_stft)

# 保存处理后的音频
output_path = 'processed_audio.wav'
sf.write(output_path, processed_audio, sr)